Systems and methods for sharing encoder output

ABSTRACT

Embodiments described herein provide systems and methods for sharing encoder output of video streams. In a particular embodiment, a method provides determining video profiles for each of a plurality of devices. The method further provides determining if two or more of the video profiles are similar by determining if parameters associated with each video profile differ by less than a threshold value. The method further provides transmitting a video stream encoded in a single format to the devices if they have similar profiles and transmitting video streams encoded in different formats to the devices if they do not have similar profiles.

RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.13/439,820, filed Apr. 4, 2012 and claims the benefit of U.S.Provisional Application No. 61/472,068, filed Apr. 5, 2011, and U.S.Provisional Application No. 61/471,312, filed Apr. 4, 2011, which arehereby incorporated by reference in their entirety.

TECHNICAL BACKGROUND

Video systems contain many different types of devices which may receive,process, store, or transmit video in different formats. These devicesmay be cameras, recorders, viewing devices, storage devices,transmission devices, coder-decoders (codecs), encoders, or otherdevices. These different devices may use different video formats due tohardware limitations, software limitations, bandwidth requirements,storage limitations, interface requirements, or for other reasons. Manydifferent video formats are possible. As a result, video may betransmitted or stored in multiple different formats within a singlevideo system. Each video format that is generated requires the resourcesof a codec or encoder to generate an instance of the video in eachformat.

OVERVIEW

Embodiments described herein provide systems and methods for sharingencoder output of video streams. In a particular embodiment, a methodprovides determining video profiles for each of a plurality of devices.The method further provides determining if two or more of the videoprofiles are similar by determining if parameters associated with eachvideo profile differ by less than a threshold value. The method furtherprovides transmitting a video stream encoded in a single format to thedevices if they have similar profiles and transmitting video streamsencoded in different formats to the devices if they do not have similarprofiles.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates a video system.

FIG. 2 illustrates an operation of a video system.

FIG. 3 illustrates a video system which uses a video encoder.

FIG. 4 illustrates a video output module.

FIG. 5 illustrates as video system with two video encoders.

FIG. 6 illustrates a video system.

FIG. 7 illustrates an operation of a video system.

FIG. 8 illustrates a video system with cameras in two locations.

FIG. 9 illustrates a video system with a shared video encoder.

FIG. 10 illustrates a camera controller.

DETAILED DESCRIPTION

FIGS. 1-10 and the following description depict specific embodiments ofthe invention to teach those skilled in the art how to make and use thebest mode of the invention. For the purpose of teaching inventiveprinciples, some conventional aspects have been simplified or omitted.Those skilled in the art will appreciate variations from theseembodiments that fall within the scope of the invention. Those skilledin the art will appreciate that the features described below can becombined in various ways to form multiple embodiments and variations ofthe invention. As a result, the invention is not limited to the specificembodiments described below, but only by the claims and theirequivalents.

Video systems are often configured to generate video streams in multipledifferent formats. Different video formats may be needed by or desiredfor various devices or users in the system. Different formats may beused due to hardware limitations, software limitations, bandwidthconstraints, storage limitations, interface requirements, or for otherreasons. For example, it may be desirable for users of a system to viewlive video streams in the highest possible available resolution andframe rate while the video stream provided to a video recorder forarchiving purposes may have to be at a lower resolution or frame ratedue to storage space limitations.

In another example, one video receiving device may be within the samenetwork as the video source or connected by a high speed connection,while a second video receiving device has a more limited connection tothe video system. The connection limitations may require that video besent to the second receiving device at a lower resolution or frame rate.This means the video has to be encoded in a separate format for thissecond device. Using a second encoder may place additional software,hardware, power, or processing requirements on the system.

The following is a non-exhaustive list of video formats which may beused in the video systems described herein: MPEG-1, MPEG-2, MPEG-4,MPEG-7, MPEG-21, H.264, DV, MiniDV, DVCAM, DVCPRO, DVCPRO50, DVCPRO HD,HDV, DVD, Blu-Ray, HD-DVD, HD-VMD, CH-DVD, HDTV, 1080i, 1080p, Flash,Quicktime, RealMedia, VHS, VHS-C, S-VHS, S-VHS-C, D-VHS, Windows Media,8 mm, Video8, Hi8, Digital8, Beta, Betamax, Betacam, Betacam SP, BetacamSX, Digital Betacam, 3GP, and 3G2.

A video profile of a device indicates which video format or formats adevice is capable of receiving and processing. The video profile alsomay specify further video parameters within each video format. Thesefurther parameters may include bit rate, frame rate, image resolution,or other parameters. These parameters vary between different videoformats and may even vary within a single video format. In other words,two video streams may both be transmitting the same video in MPEG-4format but may each have a different bit rate, frame rate, orresolution. A video profile specifies the formats of video which areacceptable to a device as well as these other parameters for each of theformats, including ranges of parameters if applicable.

FIG. 1 illustrates video system 100. Video system 100 comprises videocamera 101, video recorder 140, and video viewing device 150. Videocamera 101 comprises image capture device 104, codecs 106-107, and videooutput module 108. Each of video recorder 140 and video viewing device150 have a video profile specifying acceptable formats and parametersfor that device. Codecs 106-107 generate video in different formats andprovide the formatted video to video output module 108. It should beunderstood that video recorder 140 and video viewing device 150 may bereplaced or supplemented by many other types of devices which receive,process, relay, display, or store video.

FIG. 2 illustrates an operation of video system 100. The steps ofoperation are indicated below parenthetically. Video output module 108determines the video profiles associated with video recorder 140 andvideo viewing device 150 (210). Video output module 108 may make thisdetermination based on information received from video recorder 140 andvideo viewing device 150, based on information already contained withinvideo output module 108, or based on information obtained from othersources.

Video output module 108 then determines if the video profile of videorecorder 140 and video viewing device 150 match or differ by a valueless than a threshold (220). For example, the profiles of both videorecorder 140 and video viewing device 150 may indicate they areconfigured to receive MPEG-4 video and do so at the same frame rates,bit rates, and resolution. These would be matching video profiles.

In another example, both video recorder 140 and video viewing device 150may be configured to receive MPEG-4 video but may have differentspecified frame rates, bit rates, resolutions, or other parameters. Forexample, the profile of video viewing device 150 may indicate a framerate which is higher than that of video recorder 140. If one or moreparameters differ by a value less than a specified threshold amount, thetwo profiles may be treated as similar. For example, if a thresholdvalue is set at 20% and the differences in the frame rates in theprofiles of video recorder 140 and video viewing device 150 differ byless than 20%, they may be treated as being similar enough to receivethe same video stream. Many other types of threshold comparisons arepossible including combinations of multiple thresholds for multipleparameters.

Continuing with FIG. 2, if the profiles match or are similar, asdetermined by the threshold method described above, video output module108 transmits the same encoded video stream to both video recorder 140and video viewing device 150 (230). This may be true even though theparameters of the video stream do not necessarily identically match allof the parameters of one or more of the receiving device. In this case,only one of codecs 106-107 may need to be operated because the output ofone of them will be sufficient to supply video streams to both receivingdevices. In this way power, processing resources, or other resources canbe saved by using only one of codecs 106-107 to meet the needs of bothdevices.

If the video profiles do not match or are not sufficiently similar,separately encoded video streams will be transmitted to each of videorecorder 140 and video viewing device 150 by video output module 108(240). Codec 106 and codec 107 will be simultaneously operated toproduce the two differing video streams.

Referring back to FIG. 1, video camera 101 comprises image capturedevice 104, codecs 106-107, and video output module 108. Video camera101 may also comprise other components or circuitry for capturing andtransmitting images. For example, video camera 101 may be an analogcamera, digital camera, internet protocol (IP) camera, or other type ofcamera. Image capture device 104 performs the initial optical capture ofimages and translates them into electronic signals, digital values, orsome combination thereof. Image capture device 104 may be a sensor,charge-coupled device (CCD) or other similar device.

It should be understood that the remainder of the functions describedherein with respect to video camera 101 may be performed by otherdevices which transmit video even though they do not perform the initialoptical capture of the video. For example, video camera 101 could alsobe replaced in FIG. 1 by a video switch, video buffer, video server, orother video transmission device, including combinations thereof.

Codecs 106-107 comprise software or circuitry for coding or decodingvideo signals. Codecs 106-107 may be implemented entirely in softwareand executed on a processor of video camera 101, may be implemented inhardware, or may be implemented using some combination of hardware andsoftware. Codecs 106-107 may not actually be two separate devices butmay be one set of software or hardware which is capable ofsimultaneously encoding or decoding video streams in two or moredifferent formats. Each codec may be configured to produce video in onlyone format or may be capable of producing video in many differentformats. Codecs 106-107 may also perform analog-to-digital conversion,transformations, mathematical computations, modifications, formatting,conditioning, other processes, or combinations thereof.

Video output module 108 comprises an interface for transmitting video.Video output module 108 module may also comprise additional interfacesfor receiving and transmitting video in various formats. Video outputmodule 108 also contains circuitry or software for determiningsimilarities in video profiles and transmitting video to video recorder140, video viewing device 150, or other recipient devices based of theirvideo profiles. Video output may also contain circuitry or software forswitching, multiplexing, buffering, conditioning, or otherwise modifyingvideo signals or packets of video data. Video output module 108 isillustrated in FIG. 1 as being part of video camera 101 but could beimplemented outside of video camera 101.

Video recorder 140 receives video from video output module 108 andrecords the video. Video recorder 140 comprises an interface forreceiving video and components for storing the video. The storagecomponents of video recorder 140 may comprise a disk drive, opticaldisk, flash memory, solid state memory, tape drive, or other device forstorage of digital data, including combinations thereof. Video recorder140 may also comprise additional interfaces for transmitting orreceiving video or images, a user interface, software, a power supply,or structural support. Video recorder 140 may be a computer, server,disk array, or other device which stores video, including combinationsthereof. Video recorder 140 may also perform other processing,conditioning, formatting, or analysis on the recorded video.

Video viewing device 150 comprises any device for displaying video to auser. Video viewing device 150 displays video received from video outputmodule 108. Video viewing device 150 may comprise a liquid crystaldisplay (LCD), cathode ray tube (CRT), or other type of display device.Video viewing device 150 may be a component of a computer system,communication device, or other type of system.

FIG. 3 illustrates video system 300 which uses a video encoder. Videosystem 300 comprises video camera 301, video encoder 330, video recorder340, and display 350.

Video camera 301 comprises image capture device 304 and video outputmodule 308. Video camera 301 is an example of video camera 101 althoughvideo camera 301 may have an alternate configuration or operate in analternate manner. Codecs 106-107 of video camera 101 are not illustratedas components of video camera 301 but video camera 301 may containsimilar functions.

Video recorder 340 is an example of video recorder 140 although videorecorder 340 may have an alternate configuration or operate in analternate manner. Display 350 is an example of video viewing device 150although display 350 may have an alternate configuration or operate inan alternate manner.

Video encoder 330 processes, converts, or formats video, video streams,or images. Video encoder 330 comprises processing circuitry and aninterface for receiving and transmitting video. Video encoder 330 iscapable of performing one or more processes on video received from oneor more video sources including video camera 301. The processesperformed on the video may include analog-to-digital conversion,transformations, mathematical computations, modifications, formatting,conditioning, other processes, or combinations thereof. Video encoder330 performs processes similar to those described with respect to codecs106-107. Video encoder 330 contains software or hardware modules whichencode video signals. Video encoder 330 may use separate interfaces forreceiving and transmitting video. Video encoder 330 may also comprise auser interface, memory, software, communication components, a powersupply, or structural support.

Video system 300 performs functions similar to those described withrespect to video system 100 although the operation of video system 300may vary. In one example of operation, video encoder determines thevideo profiles associated with video recorder 340 and display 350. Videoencoder 330 may make this determination based on information receivedfrom video recorder 340 and display 350, based on information alreadyavailable to video encoder 330, or based on information obtained fromother sources.

Video encoder 330 determines if the video profile of video recorder 340and display 350 match or differ by a value less than a threshold. Forexample, the profiles of both video recorder 340 and display 350 mayindicate they are configured to receive H.264 video and do so at thesame frame rates, bit rates, and resolution. These would be matchingvideo profiles.

In another example, both video recorder 340 and display 350 may beconfigured to receive H.264 video but may have other profile parameterswhich differ. For example the video profile of display 350 may indicatea resolution which is higher than that of video recorder 340. Eventhough the resolution parameters are different, if they differ by lessthan a threshold value they may still be treated as matching. Forexample, if a threshold value is set at 10% and the differences in theresolutions specified in the profiles of video recorder 340 and display350 differ by less than 10%, they may be treated as being similar enoughto receive the same video stream. The threshold may also be specified interms of an absolute difference rather than a percentage difference.Many other types of threshold comparisons are possible includingcombinations of multiple thresholds for multiple parameters.

If the video profiles match or are similar, as determined by thethreshold method described above, video encoder 330 transmits the sameencoded video stream to both video recorder 340 and display 350. Thismay be true even though the parameters of the video stream do notidentically match all of the parameters of one or more of the receivingdevices. In this way, video encoder 330 is able to execute a singlevideo encoding process to meet the needs of both devices. If this is notthe case, video encoder would need to operate two or more video encodingprocesses to produce video streams which match the video profiles. Thismay require additional power, processing resources, configuration,software, or even an additional video encoder.

If the video profiles do not match or are not sufficiently similar basedon the comparison processes described above, separately encoded videostreams will be transmitted to each of video recorder 340 and display350.

Video encoder 300 may operate in a manner similar to that describedabove and provide the same video stream to video recorder 340 anddisplay 350 even though their profiles indicate different video formatsif those different video formats have sufficient common characteristics.

FIG. 5 illustrates a video system similar to video system 300 which usestwo separate video encoders. The functions performed by video encoder330 of FIG. 3 are split between the video scaling and filtering devicesand encoder/video compression devices of FIG. 5.

FIG. 4 illustrates video output module 400. Video output module 400 isan example of video output module 108 although video output module 400may have an alternate configuration or operate in an alternate manner.Video output module 400 includes communication interface 410 andprocessing system 420. Processing system 420 is linked to communicationinterface 410 through a communication link. Processing system 420includes processor 421 and memory system 422.

Communication interface 410 includes input ports 413, and output ports414. Communication interface 410 includes components that communicateover communication links, such as network cards, ports, RF transceivers,processing circuitry and software, or some other communication device.Communication interface 410 may be configured to communicate overmetallic, wireless, or optical links. Communication interface 410 may beconfigured to use TDM, IP, Ethernet, optical networking, wirelessprotocols, communication signaling, or some other communication format,including combinations thereof. Codecs 106-107 are examples of inputdevices 480. Video recorder 140 and video viewing device 150 areexamples of output devices 490.

Processor 421 includes microprocessor and other circuitry that retrievesand executes operating software from memory system 422. Memory system422 comprises software 423. Memory system 422 may be implemented usingrandom access memory, read only memory, a hard drive, a tape drive,flash memory, optical storage, or other memory apparatus.

Software 423 comprises operating system 424, video profile comparisonmodule 428, and video output configuration module 429. Software 423 mayalso comprise additional computer programs, firmware, or some other formof non-transitory, machine-readable instructions. Video output module400 is capable of receiving encoded video streams from codecs 106-107through input ports 413. When executed by processor 421, software 423directs processing system 420 to operate video processing system 400 todetermine if two or more video profiles match or differ by a value lessthan a threshold using video profile comparison module 428. Software 423also directs processing system 420 to configure output ports 414 totransmit the same encoded video stream to devices associated with thematching or similar profiles using video output configuration module 429and output ports 414.

The systems and methods described above with respect to FIGS. 1-5 may beused in conjunction with, or integrated within, the systems and methodsdescribed below with respect to FIGS. 6-10 for varying encoder rate ofthe video streams based on power or temperature. Alternatively, thesystems and methods described below may be used independently.

Video encoders and codecs are used in video systems to convert videofrom one format to another. The conversion may be from analog todigital, from a raw digital format to MPEG, or between many otherpossible formats. The encoders or codecs may be located at manydifferent places within the system. The following is a non-exhaustivelist of video formats which may be used in the video systems describedherein: MPEG-1, MPEG-2, MPEG-4, MPEG-7, MPEG-21, H.264, DV, MiniDV,DVCAM, DVCPRO, DVCPRO50, DVCPRO HD, HDV, DVD, Blu-Ray, HD-DVD, HD-VMD,CH-DVD, HDTV, 1080i, 1080p, Flash, Quicktime, RealMedia, VHS, VHS-C,S-VHS, S-VHS-C, D-VHS, Windows Media, 8 mm, Video8, Hi8, Digital8, Beta,Betamax, Betacam, Betacam SP, Betacam SX, Digital Betacam, 3GP, and 3G2.

In addition, there may be multiple parameters within each format whichmay be varied including bit rate, frame rate, resolution, or otherparameters. Throughout this description, adjustment of any one or moreof these parameters is referred to as adjusting the ‘encoder rate.’Adjusting the encoder rate may refer to the operation of a codec, videoencoder, or other video formatting device. Since video encoding is acomputationally intensive process, varying the encoder rate affects theprocessing requirements in the system, as well as affecting how muchdata must be transmitted to other devices in the system. In turn, thesefactors affect how much power is used by the system and how much heat isgenerated by the system.

FIG. 6 illustrates video system 600. Video system 600 comprises videocamera 601 and video storage system 640. Video camera 601 comprisescodec 606. Video camera 601 captures video of a scene and codec 606performs processing which encodes or formats the video in a format whichis compatible with video storage system 640. In FIG. 6, it should beunderstood that video storage system 640 may be replaced or supplementedby many other types of devices which receive, process, relay, display,or store video. It should also be understood that the function performedby codec 606 may also be performed outside of video camera 601.

FIG. 7 illustrates an operation of video system 600. The steps ofoperation are indicated below parenthetically. Video system 600determines how much power is being consumed (710) and then determines ifthe power consumption is outside of an acceptable range (720). Themeasured power consumption and range may pertain to the whole system,video camera 601, codec 606, or some other subset of video system 600.If the power consumption is above the acceptable range, the encoder rateof codec 606 is reduced (750). Reducing the encoder rate may includereducing the frame rate, bit rate, resolution, other video parameter, orcombinations thereof.

If the power consumption does not exceed an acceptable range, thetemperature is determined (730). The temperature may refer to theambient temperature of the environment in which video camera 601 isoperating, the temperature of video camera 601 itself, or thetemperature of codec 606. If the temperature is above an acceptablerange, the encoder rate of codec 606 is reduced (740). It should beunderstood that the power consumption and temperature may be determinedin a different order, at different times, or at different frequencies.

Referring back to FIG. 6, video camera 601 comprises codec 606. Videocamera 601 may also comprise other components or circuitry for capturingand transmitting images. For example, video camera 601 may be an analogcamera, digital camera, internet protocol (IP) camera, or other type ofcamera. It should be understood that video camera 601 may have more thanone codec. It should also be understood that the remainder of thefunctions described herein with respect to video camera 601 may beperformed by other devices which transmit video even though they do notperform the initial optical capture of the video. For example, videocamera 601 could also be replaced in FIG. 6 by a video switch, videobuffer, video server, or other video transmission device, includingcombinations thereof, which perform a video processing function.

Codec 606 comprises software or circuitry for coding or decoding videosignals. Codec 606 may be implemented entirely in software and executedon a processor of video camera 601, may be implemented in hardware, ormay be implemented using some combination of hardware and software.Codec 606 may be capable of simultaneously producing video in multipleformats or may be switchable between multiple formats. Codec 606 mayalso perform analog-to-digital conversion, transformations, mathematicalcomputations, modifications, formatting, conditioning, other processes,or combinations thereof.

FIG. 8 illustrates video system 800 which provides video monitoringcapabilities in two locations. Video system 800 comprises video cameras801-803 at locations 880 and 890, network 870, and video server 840.Locations 880 and 890 may be different physical locations or may bedifferent logical locations within a system which is at a singlephysical location.

Video server 840 receives video from video cameras 801-803. Video server840 comprises a communication interface for receiving video. Videoserver 840 may also perform other functions including storing video,processing video, analyzing video, cataloging video, distributing video,controlling video cameras 801-803, controlling codecs 806-807, or otherfunctions. Video server 840 may also comprise a user interface, memory,software, other communication components, a power supply, or structuralsupport. Video server 840 may also be a digital video recorder (DVR),video analytics engine, or other device which receives formatted video.

Video server 840 communicates with video cameras 801 and 802 at location880 through a direct link. Video server 840 communicates with videocamera 803 at location 890 through network 870. Network 870 may be anytype of communication channel which connects video server 840 to videocamera 803. Network 870 comprises a communication medium. Thecommunication medium may be metal, air, space, optical fiber such asglass or plastic, or some other material, including combinationsthereof. Network 870 may be an Internet, intranet, dedicated link,wireless link, or some other type of communication link. Network 870could use various communication protocols, such as TDM, IP, Ethernet,telephony, optical networking, wireless protocols, or some other type ofcommunication signaling or communication format, including combinationsthereof. Network 870 may provide a direct link between the devices ormay provide an indirect link which includes routers, servers, or othertypes of network communication devices, including combinations thereof.

Video cameras 801-803 are examples of video camera 101 although videocameras 801-803 may have alternate configurations or operate inalternate manners. Video cameras 801-803 comprise codecs 806-808,respectively. Codecs 806-808 are examples of codec 606 although codecs806-808 may have alternate configurations or operate in alternatemanners.

Video server 840 receives video from video cameras 801-803 which hasbeen processed and formatted by codecs 806-808. As described withrespect to FIGS. 1 and 2, the encoder rate of codecs 806-808 are reducedif power consumption is above an acceptable range or if the temperatureis above an acceptable range. Reducing the encoder rate reduces theamount of computational processing which is required thereby reducingthe power consumption and heat generated. The determination process asto whether an encoder rate should be reduced may be made by video camera801, codec 806, video server 840, or another device. After an encoderrate is reduced, the codec may return the original rate when directed toby video system 800, after a specified period of time, by command of auser, or through some other type of instruction.

In the case of location 880, the power consumption and temperaturereferenced above may be associated with video cameras 806 and 807individually, may be associated with both cameras as a combined system,or may also include other equipment of video system 800 which is atlocation 880. The temperatures described above may also pertain to thegeneral location in which the camera and codec are located.

The encoder rates of codecs 806 and 807 may be adjusted independently ormay be adjusted in a synchronized fashion. Temperature data may beembedded in the video or reported separately. Responses to temperatureswhich are exceeding an acceptable threshold may be made in the form ofadjustments to encoder rates of one device in the area or adjustments tothe encoder rates of multiple devices in the area. Power consumptionsmay relate to overall system power budgets, individual device batterylevels, cabling capacity, solar panel power availability, solar panelsupply forecasts, or other power source characteristics or budgetingfactors.

In addition to the operation described above, video system 800 may beconfigured to increase encoder rates to keep a codec or camera above aminimum operating temperature. In one example, location 890 is a coldlocation and video camera 803 has a minimum operating temperature. Therate of codec 808 may be increased, even though it may not otherwise beneeded or requested for video quality purposes, to increase thetemperature of codec 808 and/or video camera 803.

Video system 800 may also be configured to transmit notifications oralerts when encoder rates are changed as described above. Thesenotifications or alerts may be sent to a user, a central server, orother devices in video system 800.

In another example of operation, video system 800 may be configured toautomatically change the encoder rates according to a prescribedschedule. These prescribed schedules may relate to work schedules, storehours, weather forecasts, event times, or other activities. Thescheduled changes in encoder rates may also be communicated to orcoordinated with the schedules and settings of heating and coolingsystems. This may be necessary to minimize under or over correction ofthe heating and cooling systems in response to changes in encoder rates.

In another example of operation, video system 800 may be configured toreduce encoder rates of codecs 806-808 when no motion is present in thescene of its associated camera. In this manner, processing resources,power, communication bandwidth, or other resources are preserved whenthere is little or no information of interest in the video. When motionis detected, the encoder rate associated with that camera is increased.If this rate increase causes temperature or power thresholds to beexceeded, other encoder rates in the system may be reduced to compensatethe power or heat increases. In addition, other elements of the systemmay be put into lower power modes or shut down altogether. These actionsmay also be taken if power or temperature thresholds are not exceededbut forecasts or trends indicate that they may exceeded in the nearfuture.

FIG. 9 illustrates video system 900 which uses shared video encoder 910.Video encoder 910 performs an operation similar to codecs 106 and codecs306-308, but performs these functions for multiple video cameras. Videoencoder 910 may be at the same physical location as video cameras901-902 or may be at a different physical location. The encoder rate ofvideo encoder 910 may be adjusted for all of the reasons and in all themanners discussed in the examples above. If video encoder 910 is in adifferent physical location than video cameras 901-902 and video server940, the encoder rate may be adjusted in response to temperatures atvideo encoder 910 even though the temperatures at video cameras 901-902and video server 940 are within an acceptable range.

FIG. 10 illustrates camera controller 1000. Camera controller 1000performs control functions for one or more video cameras like videocameras 601, 801-803, or 901-902. Camera controller 1000 may be locatedin a video camera or may be located elsewhere in a video system. Cameracontroller 1000 includes communication interface 1010 and processingsystem 1020. Processing system 1020 is linked to communication interface1010 through a communication link. Processing system 1020 includesprocessor 1021 and memory system 1022.

Communication interface 1010 includes network interface 1012, inputports 1013, and output ports 1014. Communication interface 1010 includescomponents that communicate over communication links, such as networkcards, ports, RF transceivers, processing circuitry and software, orsome other communication device. Communication interface 1010 may beconfigured to communicate over metallic, wireless, or optical links.Communication interface 1010 may be configured to use TDM, IP, Ethernet,optical networking, wireless protocols, communication signaling, or someother communication format, including combinations thereof. Network 1070is an example of network 370. A video camera is an example of both inputdevices 1080 and output devices 1090. Other examples of input devices1080 are a user interface or a system controller. Other examples ofoutput devices 1090 are a display or an alert system.

Processor 1021 includes microprocessor and other circuitry thatretrieves and executes operating software from memory system 1022.Memory system 1022 comprises software 1023. Memory system 1022 may beimplemented using random access memory, read only memory, a hard drive,a tape drive, flash memory, optical storage, or other memory apparatus.

Software 1023 comprises operating system 1024, power consumptiondetermination module 1028, temperature determination module 1027, andencoder rate control module 1029. Software 1023 may also compriseadditional computer programs, firmware, or some other form ofnon-transitory, machine-readable instructions. When executed byprocessor 1021, software 1023 directs processing system 1020 to operatecamera controller 1000 to achieve the results described in the examplesabove. Specifically, power consumption is determined using powerconsumption determination module 1028 and temperature is determinedusing temperature determination module 1027. If either temperature orpower consumption is above an acceptable range, one or more encoderrates are reduced using encoder rate control module 1029. These changesmay be communicated using output ports 1014 or network interface 1012.

The above description and associated figures teach the best mode of theinvention. The following claims specify the scope of the invention. Notethat some aspects of the best mode may not fall within the scope of theinvention as specified by the claims. Those skilled in the art willappreciate that the features described above can be combined in variousways to form multiple variations of the invention. As a result, theinvention is not limited to the specific embodiments described above,but only by the following claims and their equivalents.

What is claimed is:
 1. A method of sharing encoded video comprising:determining a video profile for each of a plurality of devices, whereinthe video profile includes data on which video format or formats each ofthe plurality of devices is capable of receiving and processing;determining if two or more of the video profiles are similar bydetermining if parameters associated with each video profile differ byless than a threshold value; transmitting a first video stream encodedby a codec in a first format to the devices if they have similarprofiles; and transmitting simultaneously the first video stream and asecond video stream encoded by the codec in different formats to thedevices if they do not have similar profiles.
 2. The method of claim 1,further comprising specifying video parameters within each video format.3. The method of claim 2, wherein the video parameters are selected fromthe group consisting of: bit rate, frame rate, and image resolution. 4.The method of claim 2, wherein the video parameters vary within eachvideo format.
 5. The method of claim 1, wherein the video format isselected from the group consisting of: MPEG-1, MPEG-2, MPEG-4, MPEG-7,MPEG-21, H.264, DV, MiniDV, DVCAM, DVCPRO, DVCPRO50, DVCPRO HD, HDV,DVD, Blu-Ray, HD-DVD, HD-VMD, CH-DVD, HDTV, 1080i, 1080p, Flash,Quicktime, RealMedia, VHS, VHS-C, S-VHS, S-VHS-C, D-VHS, Windows Media,8 mm, Video8, Hi8, Digital8, Beta, Betamax, Betacam, Betacam SP, BetacamSX, Digital Betacam, 3GP, and 3G2.
 6. The method of claim 5, wherein thevideo format is selected based on a limitation selected from the groupconsisting of: hardware limitations, software limitations, bandwidthconstraints, storage limitations, or interface requirements.
 7. A videoprocessing system for sharing encoded video comprising: a processingsystem configured to determine a video profile for each of a pluralityof devices and determine if two or more of the video profiles aresimilar by determining if parameters associated with each video profilediffer by less than a threshold value, wherein the video profileincludes data on which video format or formats each of the plurality ofdevices is capable of receiving and processing; and a communicationinterface configured to transmit a first video stream encoded by a codecin a first format to the devices if they have similar profiles andtransmit simultaneously the first video stream and a second video streamencoded by the codec in different formats to the devices if they do nothave similar profiles.
 8. The system of claim 7, wherein the processingsystem is configured to specify video parameters within each videoformat.
 9. The system of claim 8, wherein the video parameters areselected from the group consisting of: bit rate, frame rate, and imageresolution.
 10. The system of claim 8, wherein the video parameters varywithin each video format.
 11. The system of claim 7, wherein the videoformat is selected from the group consisting of: MPEG-1, MPEG-2, MPEG-4,MPEG-7, MPEG-21, H.264, DV, MiniDV, DVCAM, DVCPRO, DVCPRO50, DVCPRO HD,HDV, DVD, Blu-Ray, HD-DVD, HD-VMD, CH-DVD, HDTV, 1080i, 1080p, Flash,Quicktime, RealMedia, VHS, VHS-C, S-VHS, S-VHS-C, D-VHS, Windows Media,8 mm, Video8, Hi8, Digital8, Beta, Betamax, Betacam, Betacam SP, BetacamSX, Digital Betacam, 3GP, and 3G2.
 12. The system of claim 11, whereinthe video format is selected based on a limitation selected from thegroup consisting of: hardware limitations, software limitations,bandwidth constraints, storage limitations, or interface requirements.13. A non-transitory computer readable medium having instructions storedthereon for operating a video processing system, wherein theinstructions, when executed by the video processing system, direct thevideo processing system to: determine a video profile for each of aplurality of devices, wherein the video profile includes data on whichvideo format or formats each of the plurality of devices is capable ofreceiving and processing; determine if two or more of the video profilesare similar by determining if parameters associated with each videoprofile differ by less than a threshold value; transmit a first videostream encoded by a codec in a first format to the devices if they havesimilar profiles; and transmit simultaneously the first video stream anda second video stream encoded by the codec in different formats to thedevices if they do not have similar profiles.
 14. The computer readablemedium of claim 13, wherein the instructions further comprise specifyingvideo parameters within each video format.
 15. The computer readablemedium of claim 14, wherein the video parameters are selected from thegroup consisting of: bit rate, frame rate, and image resolution.
 16. Thecomputer readable medium of claim 14, wherein the video parameters varywithin each video format.
 17. The computer readable medium of claim 13,wherein the video format is selected from the group consisting of:MPEG-1, MPEG-2, MPEG-4, MPEG-7, MPEG-21, H.264, DV, MiniDV, DVCAM,DVCPRO, DVCPRO50, DVCPRO HD, HDV, DVD, Blu-Ray, HD-DVD, HD-VMD, CH-DVD,HDTV, 1080i, 1080p, Flash, Quicktime, RealMedia, VHS, VHS-C, S-VHS,S-VHS-C, D-VHS, Windows Media, 8 mm, Video8, Hi8, Digital8, Beta,Betamax, Betacam, Betacam SP, Betacam SX, Digital Betacam, 3GP, and 3G2.18. The computer readable medium of claim 17, wherein the video formatis selected based on a limitation selected from the group consisting of:hardware limitations, software limitations, bandwidth constraints,storage limitations, or interface requirements.